package com.chen;


import java.util.Map;

/**
 * 图书馆服务接口，定义了对图书的基本操作方法。
 */
public interface LibraryService {
    /**
     * 初始化图书馆，从文件里读取数据
     */
    Map<String, Book> init() throws Exception;

    /**
     * 向图书馆中添加一本图书。
     *
     * @param book 要添加的图书对象
     */
    void addBook(Book book);

    /**
     * 根据书名移除一本图书。
     *
     * @param title 要移除的图书的书名
     */
    void removeBookByTitle(String title);

    /**
     * 借阅一本图书。
     *
     * @param title    要借阅的图书的书名
     * @param userName 借阅者的姓名
     */
    void borrowBook(String title, String userName);

    /**
     * 归还一本图书。
     *
     * @param title    要归还的图书的书名
     * @param userName 归还者的姓名
     */
    void returnBook(String title, String userName);

    /**
     * 展示当前图书馆中所有图书的信息。（包括是否被借出）
     */
    void displayBooks();

    /**
     * 保存数据到文件。
     */
    void saveData();

    /**
     * 根据借阅者获取所有借阅的图书。
     *
     * @param borrower 借阅者
     */
    void getAllBorrowedBookByBorrower(String borrower);

    /**
     * 根据书名获取一本图书。(模糊查询)
     *
     * @param title 要获取的图书的书名
     */
    void getBookByTitle(String title);
}
